package servlets;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import coneccion.DocumentoIdentidadConsultas;
import coneccion.CandidatosConsultas;
import coneccion.EstudiantesConsultas;
import coneccion.PropiedadesSistemaConsultas;

import objetos.DocumentoIdentidad;
import objetos.Candidato;
import objetos.Estudiante;
import utils.Constantes;

/**
 * 
 */
public class UrnaVotacion extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public UrnaVotacion() {
        super();

    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		processRequest(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		processRequest(request, response);
	}
	
	protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
		
		request.setCharacterEncoding( "UTF-8");
		
		if(request.getUserPrincipal() != null){
   			response.sendRedirect("Index");
   			return;
   		}
		PropiedadesSistemaConsultas propiedadesSistemaConsultas = new PropiedadesSistemaConsultas();
		String estadoVotacion = propiedadesSistemaConsultas.getEstadoVotacion();
		
		String legajo = request.getParameter("legajo");
		String tipoDocumento = request.getParameter("tipoDocumento");
		String numeroDocumento = request.getParameter("numeroDocumento");
		String codigoVotacion = request.getParameter("codigoVotacion");
		List<Candidato> listaCandidatos = new ArrayList<Candidato>();
		
		Estudiante estudiante = new Estudiante();
		DocumentoIdentidad documentoIdentidad = null;
		Integer tipoDocumentoInt = null;
		
		if ((legajo!=null && legajo.length()>0) 
				&& (tipoDocumento!=null && tipoDocumento.length()>0) 
				&& (numeroDocumento!=null && numeroDocumento.length()>0)
				&& (codigoVotacion!=null && codigoVotacion.length()>0) ){
			Estudiante estudianteBusqueda = new Estudiante();
			estudianteBusqueda.setLegajo(legajo);
			estudianteBusqueda.setNumeroDocumento(numeroDocumento);
			estudianteBusqueda.setCodigoVotacion(codigoVotacion);
			try{
				if(tipoDocumento!=null && tipoDocumento.length()>0){
					tipoDocumentoInt = Integer.valueOf(tipoDocumento);
				}
			}catch (Exception e) {
				tipoDocumentoInt = null;
			}
			
			if(tipoDocumentoInt!=null && tipoDocumentoInt.intValue()>0){
				documentoIdentidad = new DocumentoIdentidad();
				documentoIdentidad.setId(tipoDocumentoInt);				
			}
			
			estudianteBusqueda.setDocumentoIdentidad(documentoIdentidad);
			
			EstudiantesConsultas estudiantesConsultas = new EstudiantesConsultas();
			estudiante = estudiantesConsultas.getEstudianteParaVotar(estudianteBusqueda);
		}
		
		if(estudiante!=null && estudiante.getId()!=null && !estudiante.getEstadoVoto()){
			CandidatosConsultas candidatosConsultas = new CandidatosConsultas();
			
			listaCandidatos = candidatosConsultas.getCandidatosParaVotacion();
		}
		
		request.setAttribute("listaCandidatos", listaCandidatos);
		request.setAttribute("estudiante", estudiante);
		request.setAttribute("estadoVotacion", estadoVotacion);
		RequestDispatcher disp = request.getRequestDispatcher("pages/urnaVotacion.jsp");
		disp.forward(request, response);
	}

}
